package com.xzk;

import com.xzk.service.UserService;
import com.xzk.service.impl.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.support.SpringFactoriesLoader;

/**
 * @Classname Demo1
 * @Description TODO
 * @Date 2020/9/18 17:13
 * @Created ccc-ju
 * @email ccc-ju@outlook.com
 */
public class Demo1 {

    /**
     * 原来不使用Spring框架的步骤
     */
    @Test
    public void run1(){
        //以前的时候对象创建权力是由开发者控制
        UserService userService = new UserServiceImpl();
        //调用方法
        userService.hello();
    }

    /**
     * 使用IOC方式
     */
    @Test
    public void run2(){
        //先创建SpringIOC的工厂，加载src目录下的配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //从容器中获取对象
        UserService userService = (UserService) ac.getBean("userServiceImpl");
        //获取对象方法即可
        userService.hello();
    }

    /**
     * 测试对象的生命周期
     */
    @Test
    public void run3(){
        //先创建SpringIOC的工厂，加载src目录下的配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("==============================");
        //从容器中获取对象
        UserService userService = (UserService) ac.getBean("userServiceImpl");
        //获取对象方法即可
        userService.hello();
    }

    /**
     * 以上都是默认的实例化bean的方式
     * 2.静态工厂实例化bean
     */
    @Test
    public void run4(){
        //先创建SpringIOC的工厂，加载src目录下的配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("==============================");
        //从容器中获取对象
        UserService userService = (UserService) ac.getBean("us");
        //获取对象方法即可
        userService.hello();
    }

    /**
     * 以上都是默认的实例化bean的方式
     * 2.静态工厂实例化bean
     * 3.实例化公场的方式实例化bean
     */
    @Test
    public void run5(){
        //先创建SpringIOC的工厂，加载src目录下的配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("==============================");
        //从容器中获取对象
        UserService userService = (UserService) ac.getBean("us3");
        //获取对象方法即可
        userService.hello();
    }

}
